﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BussinesCosea;
using System.Configuration;
using System.Data.SqlClient;

public partial class ResultadoOser : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();    
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    private static int folio = 0;
    private static BussinesCosea.OrdenServicio ordenServicio = new BussinesCosea.OrdenServicio();
    private static BussinesCosea.HistoriaOrdenServicio hOrden = new HistoriaOrdenServicio();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack == false)
        {
            folio = int.Parse(this.Request.QueryString["id"]);
            HiddenField1.Value = this.Request.QueryString["id"];
            CargaCombos();
            cargaDatos();
            hOrden.IdOrden = folio;
            hOrden.IdEstado = 5;
            hOrden.Comentario = "Orden Actualizada";           
        }
    }

    private void CargaCombos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {

                EstadoOrden.DataSource = c.ObtenEstadosOrdenServicio();
                EstadoOrden.DataTextField = "Descripcion";
                EstadoOrden.DataValueField = "IdEstado";
                EstadoOrden.DataBind();

                IdPuesto.DataSource = c.ObtenPuestos();
                IdPuesto.DataTextField = "Puesto1";
                IdPuesto.DataValueField = "IdPuesto";
                IdPuesto.DataBind();


                TipoContrato.DataSource = c.ObtenTipoContrato();
                TipoContrato.DataTextField = "Descripcion";
                TipoContrato.DataValueField = "IdTipoContrato";
                TipoContrato.DataBind();
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //throw;
        }
    }

    private void cargaDatos()
    {
        try
        {
            List<BussinesCosea.SPBuscaPreseleccionadosResult> lstPreseleccion = new List<BussinesCosea.SPBuscaPreseleccionadosResult>();
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                ordenServicio = c.ObtenOrdenServicio(folio);
                lstPreseleccion = c.BuscaPreseleccionados(folio);

                AdmBonosOrdenServicio.ListaBonosOrdenServicio = c.ObtenBonosPorOrden(folio);
                AdmValesOrdenServicio.ListaValesOrdenServicio = c.ObtenValesPorOrden(folio);

                grdHistoriaOrdenServicio.DataSource = c.ObtenHistoriaOrdenServicio(folio);
                grdHistoriaOrdenServicio.DataBind();
            }
            
            grdDatos.DataSource = AdmBonosOrdenServicio.ListaBonosOrdenServicio;
            grdDatos.DataBind();

            grdDatos2.DataSource = AdmValesOrdenServicio.ListaValesOrdenServicio;
            grdDatos2.DataBind();

            Empresa.Text = ordenServicio.Empresa.Nombre;
            Folio.Text = ordenServicio.Folio;
            Cliente.Text = ordenServicio.Cliente.RazonSocial;
            FechaOrden.Text = ordenServicio.FechaOrden.ToString("yyyy/MM/dd");
            FechaRequerida.Text = ordenServicio.FechaRequeridaContratacion.Value.ToString("yyyy/MM/dd");
            //FechaReqFinal.Text = ordenServicio.fec
            TotalVacantes.Text = ordenServicio.TotalVacantes.ToString();
            IdPuesto.Text = ordenServicio.Puesto.IdPuesto.ToString();            
            FechaEstimada.Text = ordenServicio.FechaEstimadaInicio.Value.ToString("yyyy/MM/dd");
            sexo.SelectedItem.Text = ordenServicio.Genero;
            EdadMinima.Text = ordenServicio.EdadMinima;
            EdadMaxima.Text = ordenServicio.EdadMaxima;
            EstadoCivil.Text = ordenServicio.EstadoCivil;
            Talla.Text = ordenServicio.Talla;
            Estatura.Text = ordenServicio.Estatura;
            Escolaridad.Text = ordenServicio.Escolaridad;
            Titulo.Text = ordenServicio.Titulo;
            Idiomas.Text = ordenServicio.IdiomaExtranjero;
            Otros.Text = ordenServicio.Otros;
            Experiencia.Text = ordenServicio.ExperienciaRequerida;
            Tiempo.Text = ordenServicio.Tiempo;
            Habilidades.Text = ordenServicio.Habilidades;
            Conocimientos.Text = ordenServicio.Conocimiento;
            SoftwareManejar.Text = ordenServicio.SoftwareaManejar;
            Actividades.Text = ordenServicio.Actividades;
            PersonalCargo.Text = ordenServicio.PersonalCargo;
            CantidadPersonal.Text = ordenServicio.CantidadPersonalCargo.ToString();
            LugardeTrabajo.Text = ordenServicio.LugardeTrabajo;
            Colonia.Text = ordenServicio.ColoniaLugarTrabajo;
            EntreCalles.Text = ordenServicio.EntreCallesLugarTrabajo;
            Observaciones.Text = ordenServicio.Observaciones;
            SalarioMinimo.Text = ordenServicio.SalarioMinimo.ToString();
            SalarioMaximo.Text = ordenServicio.SalarioMaximo.ToString();
            ObservacionesSalario.Text = ordenServicio.ObservacionesSalario;
            Transporte.Text = ordenServicio.TieneTransporte;
            Comedor.Text = ordenServicio.TieneComedor;
            Prestaciones.Text = ordenServicio.Prestaciones;
            PeriodoSalario.SelectedItem.Text = ordenServicio.PeriodoSalario;
            TipoMoneda.SelectedItem.Text = ordenServicio.TipoMoneda;
            VigenciaContrato.SelectedItem.Text = ordenServicio.Vigencia;
            FechaReqFinal.Text = ordenServicio.FechaRequeridaContratacionFinal.Value.ToString("yyyy/MM/dd");
            Horarios.Text = ordenServicio.HorariosEntrevista;


            //Preseleccionados
            Preseleccionados.DataSource = lstPreseleccion;
            Preseleccionados.DataBind();
            
            EstadoOrden.Text = ordenServicio.UltimoEstado.ToString();            
            txtComentariosEstado.Text = hOrden.Comentario;

            
            
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
           // throw;
        }

    }

    private void GuardaOrden()
    {        
        bool result = false;
        try
        {            
            BussinesCosea.OrdenServicio oser = new BussinesCosea.OrdenServicio(); //Haces una instancia de la solicitud de empleo es importante que refieras el namespace antes.

            DateTime ffecha = DateTime.Now;
            result = DateTime.TryParse(FechaOrden.Text, out ffecha);
            if (result)
                oser.FechaOrden = ffecha;
            else
                oser.FechaOrden = DateTime.Now;

            //oser.IdPuesto = 1; //relacionar con combo

            result = DateTime.TryParse(FechaRequerida.Text, out ffecha);
            if (result)
                oser.FechaRequeridaContratacion = ffecha;
            else
                oser.FechaRequeridaContratacion = DateTime.Now;
            result = DateTime.TryParse(FechaReqFinal.Text, out ffecha);
            if (result)
                oser.FechaRequeridaContratacionFinal = ffecha;
            else
                oser.FechaRequeridaContratacionFinal = DateTime.Now;
            oser.IdEmpresa = 1; //relacionar con combo
            int ivalor = 0;
            //result = int.TryParse(Puesto.Text, out ivalor);
            //if (result)
            //    oser.IdPuesto = ivalor;
            //else
            //    oser.IdPuesto = 1;

            result = int.TryParse(TotalVacantes.Text, out ivalor);
            if (result)
                oser.TotalVacantes = ivalor;
            else
                oser.TotalVacantes = 1;

            oser.EdadMinima = USis.TStr(10, EdadMinima.Text);
            oser.EdadMaxima = USis.TStr(10, EdadMaxima.Text);
            oser.Genero = USis.TStr(10, sexo.Text);
            oser.EstadoCivil = USis.TStr(15, EstadoCivil.Text);
            oser.Escolaridad = USis.TStr(20, Escolaridad.Text);
            oser.Titulo = USis.TStr(20, Titulo.Text);
            oser.IdiomaExtranjero = USis.TStr(15, Idiomas.Text);
            oser.Estatura = USis.TStr(15, Estatura.Text);
            oser.Talla = USis.TStr(15, Talla.Text);
            oser.Otros = USis.TStr(50, Otros.Text);
            oser.ExperienciaRequerida = USis.TStr(15, Experiencia.Text);
            oser.Tiempo = USis.TStr(10, Tiempo.Text);
            oser.Conocimiento = USis.TStr(50, Conocimientos.Text);
            oser.Habilidades = USis.TStr(50, Habilidades.Text);
            oser.Actividades = USis.TStr(50, Actividades.Text);
            oser.SoftwareaManejar = USis.TStr(50, SoftwareManejar.Text);
            oser.PersonalCargo = USis.TStr(10, PersonalCargo.Text);
            oser.ObservacionesSalario = USis.TStr(50, ObservacionesSalario.Text);

            oser.PeriodoSalario = USis.TStr(10, PeriodoSalario.Text);
            oser.TipoMoneda = USis.TStr(10, TipoMoneda.Text);
            oser.HorariosEntrevista = USis.TStr(30, Horarios.Text);


            result = int.TryParse(CantidadPersonal.Text, out ivalor);
            if (result)
                oser.CantidadPersonalCargo = ivalor;
            else
                oser.CantidadPersonalCargo = 0;
            oser.LugardeTrabajo = USis.TStr(20, LugardeTrabajo.Text);
            oser.ColoniaLugarTrabajo = USis.TStr(20, Colonia.Text);
            oser.EntreCallesLugarTrabajo = USis.TStr(50, EntreCalles.Text);
            oser.Comentarios1 = USis.TStr(50, Observaciones.Text);
            oser.TieneComedor = USis.TStr(10, Comedor.Text);
            oser.TieneTransporte = USis.TStr(10, Transporte.Text);
            oser.Prestaciones = USis.TStr(10, Prestaciones.Text);
            //oser.TipoContrato

            result = DateTime.TryParse( FechaEstimada.Text, out ffecha);
            if (result)
                oser.FechaEstimadaInicio = ffecha;
            else
                oser.FechaEstimadaInicio = DateTime.Now;

            result = DateTime.TryParse(FechaEstimadaF.Text, out ffecha);
            if (result)
                oser.FechaEstimadaTerminacion = ffecha;
            else
                oser.FechaEstimadaTerminacion = DateTime.Now;

            result = int.TryParse(SalarioMinimo.Text, out ivalor);
            if (result)
                oser.SalarioMinimo = ivalor;
            else
                oser.SalarioMinimo = 1;

            result = int.TryParse(SalarioMaximo.Text, out ivalor);
            if (result)
                oser.SalarioMaximo = ivalor;
            else
                oser.SalarioMaximo = 1;

            oser.Vigencia = USis.TStr(10, VigenciaContrato.Text);
            oser.Observaciones = USis.TStr(50, Observaciones.Text);

            oser.IdCliente = ordenServicio.IdCliente;
            oser.IdEmpresa = ordenServicio.IdEmpresa;
            oser.IdPuesto = int.Parse(IdPuesto.SelectedItem.Value);
            oser.IdTipoContrato = int.Parse(TipoContrato.SelectedItem.Value);
            oser.IdOrden = folio;


            hOrden.IdEstado = int.Parse(EstadoOrden.SelectedItem.Value);
            hOrden.Comentario = txtComentariosEstado.Text;


            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                c.ActualizaOrdenServicio(oser, hOrden);

                foreach (BonosOrdenServicio item in AdmBonosOrdenServicio.ListaBonosOrdenServicio)
                {
                    if(c.TieneBonoOrdenServicio(folio))
                        c.GuardaBonoOrdenServicio(item, TipoGuardado.ActualizaRegistro, folio);
                    else
                        c.GuardaBonoOrdenServicio(item, TipoGuardado.NuevoRegistro, folio);
                }

                foreach (ValesOrdenServicio item in AdmValesOrdenServicio.ListaValesOrdenServicio)
                {
                    if(c.TieneValesOrdenServicio(folio))
                        c.GuardaValesOrdenServicio(item, TipoGuardado.ActualizaRegistro, folio);
                    else
                        c.GuardaValesOrdenServicio(item, TipoGuardado.NuevoRegistro, folio);
                }

                grdHistoriaOrdenServicio.DataSource = c.ObtenHistoriaOrdenServicio(folio);
                grdHistoriaOrdenServicio.DataBind();
            }




        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
            //Aqui hay que mandar llamar una pantalla para los mensajes de error.
            //throw;
        }

    }



    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        GuardaOrden();
    }
}